# 函数本身也是一种数据类型(<class 'function'>)，可以作为参数传递给另一个函数
# 定义一个回调函数
def callback(name):
    print(f'hello,{name}')

# 接收回调函数作为参数的函数
def call(user_name,callback_func):
    print('开始执行回调函数：')
    print("callback_func的类型", type(callback_func))
    callback_func(user_name)
    print('回调函数执行完毕-call函数！')

# 使用回调函数定义排序规则
data = [('cendy', 18), ('bob', 20), ('alice', 16)]
def sort_rule_age(x):
    return x[1]
new_data = sorted(data, key=sort_rule_age)

# 过滤偶数列表
num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new_num = list(filter(lambda x:x % 2 == 0, num))

if __name__ == '__main__':
    # 调用函数，并传入回调函数
    call('cendy',  callback)
    print('------------------------')
    print('data原始列表为：', data)
    print('data按照年龄排序后为：', new_data)
    print('------------------------')
    print('num原始列表为：', num)
    print('过滤偶数列表：', new_num)
    print('------------------------')